Make safe error messages consistent #20654
Merged
+394
−377
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There are quite a few safety error messages, and some tell they are related to 'safe code' or
@safe
functions, while others don't. This is not only inconsistent, it's also false with-preview=safer
: some of these errors occur in functions without a@safe
annotation.This PR rewrites all safety error messages so they either form a noun or gerund: "pointer arithmetic" or "void initializing a pointer". The error reporter will then surround that in context:
deprecations: "{action} will become
@system
in the future"safe functions: "{action} is not allowed in a
@safe
function"safer functions: "{action} is not allowed in a function with default safety with
-preview=safer
"system variables: "{action} can't initialize
@safe
variable%s
"inferred supplemental error: "which wasn't safe because of: {action}"
Occasionally this requirement results in suggested fixes being phrased slightly awkwardly:
A future enhancement of adding supplemental errors to
setUnsafe
could improve this.